#pragma once

#include <iostream>


namespace Test
{
	namespace UnitTest
	{
#define TESTCASE(NAME)\
		class TESTCASE_RUNNER_##NAME\
		{\
		private:\
			void Run();\
		public:\
			TESTCASE_RUNNER_##NAME()\
			{\
				std::wcout<<L"test "<<#NAME<<L"..."<<std::endl;\
				Run();\
			}\
		}TESTCASE_RUNNER_##NAME##INSTANCE;\
		void TESTCASE_RUNNER_##NAME::Run()

#define ASSERT(CONDITION, DESCRIPTION)\
		do {if (!(CONDITION)) std::wcout<<L"\tError: "<<(DESCRIPTION)<<std::endl;}while(0);
	}
}